/**
 * Copyright (C), 2015-2020, XXX有限公司
 * FileName: CreateBarDataUtil
 * Author:   zmjha
 * Date:     2020/8/3 11:10
 * Description: 封装了一个用于生成前端柱状图对应数据结构所需数据的方法
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.zmj.utils;

/**
 * 〈一句话功能简述〉<br> 
 * 〈封装了一个用于生成前端柱状图对应数据结构所需数据的方法〉
 *
 * @author zmjha
 * @create 2020/8/3
 * @since 1.0.0
 */

import java.util.*;

/**
 * 封装了一个用于生成前端柱状图对应数据结构所需数据的方法
 *
 * @author sueyun
 *
 */
public class CreateBarDataUtil {

    /**
     * 用来生成前端柱状图对应数据结构所需要的原数据，数据中保存的键的名字和原来一样
     *
     * @param barData 需要一个泛型为Map的list集合数据作为柱状图所需要的数据
     * @return 返回一个Map<String, Object>集合，集合里面的键为入参集合中的键
     * @throws Exception 空值判断
     */
    public static Map<String, Object> getBarDatas(List<Map<String, Object>> barData) throws Exception {
        // 判断数据是否为空
        if (barData == null || barData.size() == 0) {

            throw new Exception(barData + "为空....");
        } else {

            Map<String, Object> barJson = new HashMap<String, Object>();

            // 获得集合中Map的所有键的名字
            Set<String> keySet = barData.get(0).keySet();

            // 循环遍历set集合创建对应键个数的list集合，并填充数据最后在把list放入另一个map集合中
            for (String key : keySet) {

                List<String> data = new ArrayList<String>();

                for (Map<String, Object> map : barData) {

                    data.add(String.valueOf(map.get(key)));
                }

                barJson.put(key, data);
            }

            return barJson;
        }
    }
}
